package com.yunji.base.dao.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yunji.base.dao.ISiteAuditDao;
import com.yunji.base.domain.SiteAuditDO;
import com.yunji.base.enums.AuditStatus;
import com.yunji.base.mapper.ISiteAuditMapper;
import com.yunji.base.params.SiteAuditParam;
import com.yunji.common.annotation.DataScope;
import com.yunji.common.base.BaseDaoImpl;
import com.yunji.common.base.IModifyStatusBaseBO;
import com.yunji.common.utils.bean.BeanUtils;
import org.springframework.stereotype.Repository;

import java.util.List;


@Repository
public class SiteAuditDaoImpl extends BaseDaoImpl<ISiteAuditMapper, SiteAuditDO> implements ISiteAuditDao {

    @Override
    public boolean checkUniqueAudit(String siteTel) {
        return lambdaQuery().eq(SiteAuditDO::getSiteTel, siteTel).eq(SiteAuditDO::getAuditStatus, AuditStatus.WAIT.getCode()).exists();
    }

    @Override
    @DataScope
    public List<SiteAuditDO> search(SiteAuditParam dto) {
        return pageList(dto,new LambdaQueryWrapper<SiteAuditDO>()
                .eq(BeanUtils.isNotNull(dto.getAuditId()), SiteAuditDO::getAuditId, dto.getAuditId())
                .eq(BeanUtils.isNotNull(dto.getScaleType()), SiteAuditDO::getScaleType, dto.getScaleType())
                .eq(BeanUtils.isNotNull(dto.getAuditStatus()), SiteAuditDO::getAuditStatus, dto.getAuditStatus())
                .like(BeanUtils.isNotNull(dto.getSiteTel()), SiteAuditDO::getSiteTel, dto.getSiteTel())
                .like(BeanUtils.isNotNull(dto.getSiteName()), SiteAuditDO::getSiteName, dto.getSiteName())
                .orderByDesc(SiteAuditDO::getCreateTime));
    }

    @Override
    public boolean modifyStatus(IModifyStatusBaseBO<Long> iModifyStatusBaseBO) {
        return modifyStatusById(iModifyStatusBaseBO, SiteAuditDO::getAuditId, SiteAuditDO::getAuditStatus);
    }
}
